using System;
using Cysharp.Threading.Tasks;

namespace EventBus
{
    public interface IRemoveAsyncActionEventListener
    {
        void RemoveListen(string eventName, Func<UniTask> callback);
        void RemoveListen<T1>(string eventName, Func<T1, UniTask> callback);
        void RemoveListen<T1, T2>(string eventName,  Func<T1, T2, UniTask> callback);
        void RemoveListen<T1, T2, T3>(string eventName,  Func<T1, T2, T3, UniTask> callback);
        void RemoveListen<T1, T2, T3, T4>(string eventName,  Func<T1, T2, T3, T4, UniTask> callback);
        void RemoveListen<T1, T2, T3, T4, T5>(string eventName,  Func<T1, T2, T3, T4, T5, UniTask> callback);
        void RemoveListen<T1, T2, T3, T4, T5, T6>(string eventName,  Func<T1, T2, T3, T4, T5, T6, UniTask> callback);
        void RemoveListen<T1, T2, T3, T4, T5, T6, T7>(string eventName,  Func<T1, T2, T3, T4, T5, T6, T7, UniTask> callback);
        void RemoveListen<T1, T2, T3, T4, T5, T6, T7, T8>(string eventName,  Func<T1, T2, T3, T4, T5, T6, T7, T8, UniTask> callback);
    }
}